home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1999 March
/
EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso
/
earcd
/
devel
/
vbcc-68k-src
/
machines
/
amiga68k
/
libsrc
/
amigalib
/
argarray.c
next >
Wrap
C/C++ Source or Header
|
1999-01-01
|
2KB
|
96 lines
#include <exec/memory.h>
#include <workbench/startup.h>
#include <workbench/workbench.h>
#include <libraries/commodities.h>
#include <proto/commodities.h>
#include <proto/icon.h>
#include <proto/exec.h>
#include <proto/dos.h>
/* Was hat NEW_ARGARRAY zu bedeuten? */
#ifdef NEW_ARGARRAY
static UBYTE **argArray;
#endif
static struct DiskObject *dObj;
UBYTE **ArgArrayInit(long argc, UBYTE **argv)
{
if (argc)
{
if (argc>1)
#ifdef NEW_ARGARRAY
if ((argArray=AllocVec(argc*sizeof(char *),MEMF_ANY)))
{
UBYTE **p,**p1;
p=p1=argArray;
argv++;
do
{
*p1++=*argv++;
}
while(--argc);
return p;
}
#else
{
argv++; return argv;
}
#endif
}
else
if ((dObj=GetDiskObject(((struct WBStartup *)argv)->sm_ArgList->wa_Name)))
return (UBYTE **)dObj->do_ToolTypes;
return NULL;
}
STRPTR ArgString(UBYTE **tt, STRPTR entry, STRPTR defstr)
{
STRPTR str;
if (!entry || !(str=FindToolType(tt,entry)))
str=defstr;
return str;
}
LONG ArgInt(UBYTE **tt, STRPTR entry, long defval)
{
STRPTR str;
if (entry && (str=FindToolType(tt,entry)))
StrToLong(str,&defval);
return defval;
}
#if 0
CxObj *UserFilter(UBYTE **tt, STRPTR entry, STRPTR defstr)
{
STRPTR str;
if (!entry || !(str=FindToolType(tt,entry)))
str=defstr;
return (CreateCxObj(CX_FILTER,(long)str,NULL));
}
#endif
void ArgArrayDone(void)
{
struct DiskObject **d;
#ifdef NEW_ARGARRAY
UBYTE ***a;
if (*(a=&argArray))
{
FreeVec(*a); *a=NULL;
}
#endif
if (*(d=&dObj))
{
FreeDiskObject(*d); *d=NULL;
}
}